<html>
<head><meta charset="utf-8"><title>regression after switching to gimli · t-compiler/performance · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/index.html">t-compiler/performance</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html">regression after switching to gimli</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="204397008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397008">(Jul 20 2020 at 08:22)</a>:</h4>
<p>Looks like the libbacktrace -&gt; gimli switch <a href="https://github.com/rust-lang/rust/pull/73441">https://github.com/rust-lang/rust/pull/73441</a> also brought a number of regressions<br>
<a href="https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&amp;end=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;stat=instructions%3Au">https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&amp;end=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;stat=instructions%3Au</a></p>



<a name="204397266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397266">(Jul 20 2020 at 08:26)</a>:</h4>
<p>me, on the PR (before you edited the Zulip link in):</p>
<blockquote>
<p>Could that be from linking all that code into the final executable? Seems like the main thing that would affect incremental runs too.</p>
<p><strong>EDIT</strong>: seems to be a combination of <code>run_linker</code> and <code>metadata_decode_entry</code>. The latter might be fixable by separating some of the code into a crate, but it's unclear how/if that might help. Not sure what we can do about link times.</p>
</blockquote>



<a name="204397769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397769">(Jul 20 2020 at 08:33)</a>:</h4>
<p>It's not this PR, I found another one that caused the regression. Looking for the link.</p>



<a name="204397825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397825">(Jul 20 2020 at 08:34)</a>:</h4>
<p>the LD one?</p>



<a name="204397829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397829">(Jul 20 2020 at 08:34)</a>:</h4>
<p>Yeah</p>



<a name="204397831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397831">(Jul 20 2020 at 08:34)</a>:</h4>
<p>there are two different bumps in the graph  :(</p>



<a name="204397838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397838">(Jul 20 2020 at 08:34)</a>:</h4>
<p>oh I thought the perf run was for this PR, I didn't check</p>



<a name="204397874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397874">(Jul 20 2020 at 08:35)</a>:</h4>
<p>is the gap that big because of the breakage to <code>rust-src</code>?</p>



<a name="204397877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397877">(Jul 20 2020 at 08:35)</a>:</h4>
<p><a href="/user_uploads/4715/BqoMXKmYWyAtXbdiv16kzUIj/bump.png">bump.png</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/BqoMXKmYWyAtXbdiv16kzUIj/bump.png" title="bump.png"><img src="/user_uploads/4715/BqoMXKmYWyAtXbdiv16kzUIj/bump.png"></a></div>



<a name="204397893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397893">(Jul 20 2020 at 08:35)</a>:</h4>
<p>the first one is already reverted/mitigated</p>



<a name="204397919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397919">(Jul 20 2020 at 08:35)</a>:</h4>
<p>Oh, sorry.</p>



<a name="204397960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397960">(Jul 20 2020 at 08:36)</a>:</h4>
<p>Sounds bad then.</p>



<a name="204397964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397964">(Jul 20 2020 at 08:36)</a>:</h4>
<p>the first one was from the rollup, the second one is libbacktrace</p>



<a name="204397991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204397991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matthiaskrgr <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204397991">(Jul 20 2020 at 08:36)</a>:</h4>
<p><span class="user-mention silent" data-user-id="119009">eddyb</span> <a href="#narrow/stream/247081-t-compiler.2Fperformance/topic/regression.20after.20switching.20to.20gimli/near/204397874">said</a>:</p>
<blockquote>
<p>is the gap that big because of the breakage to <code>rust-src</code>?</p>
</blockquote>
<p>no idea,  there have also been days with only one merge per day recently</p>



<a name="204398082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398082">(Jul 20 2020 at 08:38)</a>:</h4>
<p>In the perf result you linked above regression is again coming from <code>run_linker</code>.</p>



<a name="204398093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398093">(Jul 20 2020 at 08:38)</a>:</h4>
<p>oh I was getting confused by everything in <a href="https://github.com/rust-lang/rust/compare/d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02...1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e">https://github.com/rust-lang/rust/compare/d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02...1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e</a></p>



<a name="204398106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398106">(Jul 20 2020 at 08:38)</a>:</h4>
<p>it's only two merges,  a rollup and the backtrace-gilmi PR</p>



<a name="204398108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398108">(Jul 20 2020 at 08:38)</a>:</h4>
<p>Or at least big part of it?</p>



<a name="204398166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398166">(Jul 20 2020 at 08:39)</a>:</h4>
<p>not seeing anything in the rollup that would increase link times that much</p>



<a name="204398240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398240">(Jul 20 2020 at 08:40)</a>:</h4>
<p>oh and the rollup is in the perf queue, so we'll have further confirmation in a while?</p>



<a name="204398442"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204398442" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204398442">(Jul 20 2020 at 08:43)</a>:</h4>
<p>I'll see when I get next to my PC, perf.rlo doesn't work nice on the mobile...</p>



<a name="204401773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401773">(Jul 20 2020 at 09:23)</a>:</h4>
<p>I think we should wait until perf.rlo benchmarks rollup so we get separate results. Personally I'd bet <a href="https://github.com/rust-lang/rust/pull/74464">https://github.com/rust-lang/rust/pull/74464</a></p>
<p>cc <span class="user-mention" data-user-id="116122">@simulacrum</span> perf.rlo queue seems stuck</p>



<a name="204401838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401838">(Jul 20 2020 at 09:24)</a>:</h4>
<p>but that's a dependency of <code>rustc</code>, how could it affect link time?</p>



<a name="204401892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401892">(Jul 20 2020 at 09:25)</a>:</h4>
<p>Rust now does more work when linking</p>



<a name="204401914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401914">(Jul 20 2020 at 09:25)</a>:</h4>
<p>there's no way a one-time path thing is more expensive than linking an entire DWARF parser</p>



<a name="204401972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401972">(Jul 20 2020 at 09:26)</a>:</h4>
<p>the former should be about the cost of linking for one or two extra functions in libstd</p>



<a name="204401996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204401996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204401996">(Jul 20 2020 at 09:26)</a>:</h4>
<p>if it's even any different (I'd be very amazed to be proven wrong on this one)</p>



<a name="204402001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402001">(Jul 20 2020 at 09:26)</a>:</h4>
<p>See <a href="https://github.com/rust-lang/rust/pull/74478">https://github.com/rust-lang/rust/pull/74478</a> for some magic numbers ;D</p>



<a name="204402031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402031">(Jul 20 2020 at 09:27)</a>:</h4>
<p>yeah but that's affecting everything the linker does with strings</p>



<a name="204402049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402049">(Jul 20 2020 at 09:27)</a>:</h4>
<p>it's multiplied by the number of strings in whatever's being linked</p>



<a name="204402160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402160">(Jul 20 2020 at 09:28)</a>:</h4>
<p>the old <code>path_relative_from(a, b)</code> seems to be roughly linear in <code>max(a.len(), b.len())</code></p>



<a name="204402190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402190">(Jul 20 2020 at 09:28)</a>:</h4>
<p>and how long is a path anyway :P</p>



<a name="204402226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402226">(Jul 20 2020 at 09:29)</a>:</h4>
<p>Well, it's the only change that touched linker code <span aria-label="shrug" class="emoji emoji-1f937" role="img" title="shrug">:shrug:</span></p>



<a name="204402240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402240">(Jul 20 2020 at 09:29)</a>:</h4>
<p>(also I think I didn't realize we had something like this, I could've really used it last year when dealing with some absolute paths ending up in Cargo hashes)</p>



<a name="204402346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402346">(Jul 20 2020 at 09:30)</a>:</h4>
<p>I still think the large dependency added to libstd is more likely to increase link times, by the simple factor of there being a lot more to link :P</p>



<a name="204402367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402367">(Jul 20 2020 at 09:30)</a>:</h4>
<p>but I guess we'll see, I don't really have anything to bet on (or any hats to eat)</p>



<a name="204402464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402464">(Jul 20 2020 at 09:32)</a>:</h4>
<p>We replaced <del>libunwind</del> libbacktrace with other code, I don't expect that huge changes because of that.</p>



<a name="204402526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402526">(Jul 20 2020 at 09:32)</a>:</h4>
<p>do we really not use libunwind for unwinding panics at all?</p>



<a name="204402551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402551">(Jul 20 2020 at 09:33)</a>:</h4>
<p>(I mean, that'd be cool, but I thought we only did that on the few targets where we don't have much of a choice)</p>



<a name="204402564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402564">(Jul 20 2020 at 09:33)</a>:</h4>
<p>we replaced libbacktrace, not libunwind I think</p>



<a name="204402571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402571">(Jul 20 2020 at 09:33)</a>:</h4>
<p>Oops, I mean libbacktrace</p>



<a name="204402587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402587">(Jul 20 2020 at 09:33)</a>:</h4>
<p>hmm I guess that was statically linked too?</p>



<a name="204402640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402640">(Jul 20 2020 at 09:34)</a>:</h4>
<p>AFAICT yes</p>



<a name="204402703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204402703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204402703">(Jul 20 2020 at 09:35)</a>:</h4>
<p>We can just wait until Mark fixes perf.rlo and then we will know if it was rollup or gimli.</p>



<a name="204413918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204413918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204413918">(Jul 20 2020 at 12:07)</a>:</h4>
<p>I am not aware of any bugs on perf.rlo to be honest</p>



<a name="204415313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204415313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204415313">(Jul 20 2020 at 12:24)</a>:</h4>
<p>Queue on the status page looked stuck but it works now, sorry for the noise.</p>



<a name="204415371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204415371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204415371">(Jul 20 2020 at 12:25)</a>:</h4>
<p>hm okay it updates every 2.5 hours roughly so not too surprising</p>



<a name="204415378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204415378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204415378">(Jul 20 2020 at 12:25)</a>:</h4>
<p>I'm still thinking of the best way to sync current progress</p>



<a name="204416081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204416081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204416081">(Jul 20 2020 at 12:32)</a>:</h4>
<p>Back to the topic, I was sort of right.<br>
Gimli perf result: <a href="https://perf.rust-lang.org/compare.html?start=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;end=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;stat=instructions:u">https://perf.rust-lang.org/compare.html?start=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;end=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;stat=instructions:u</a><br>
Rollup perf result: <a href="https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&amp;end=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;stat=instructions:u">https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&amp;end=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;stat=instructions:u</a></p>
<p>You were right about gimili regression, it's the huge one but we also have serious regression in the rollup of 11 PRs <span aria-label="sad" class="emoji emoji-2639" role="img" title="sad">:sad:</span></p>



<a name="204416153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204416153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204416153">(Jul 20 2020 at 12:33)</a>:</h4>
<p>Is anyone with <code>bors try</code> permission up to create reverts and benchmark most suspicious PRs in the rollup?</p>



<a name="204417021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204417021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204417021">(Jul 20 2020 at 12:42)</a>:</h4>
<p>gah there's a bunch of perf-sensitive PRs in that rollup</p>



<a name="204426358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204426358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204426358">(Jul 20 2020 at 14:08)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> what's the command for testing on perf nowadays?</p>



<a name="204426369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204426369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204426369">(Jul 20 2020 at 14:08)</a>:</h4>
<p>I want to test out <a href="https://github.com/rust-lang/rust/pull/74560">https://github.com/rust-lang/rust/pull/74560</a> to see if it has an affect on link times at all</p>



<a name="204426486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204426486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204426486">(Jul 20 2020 at 14:09)</a>:</h4>
<p>alas :(, mind doing the <code>@rust-timer queue</code> for me?</p>



<a name="204500298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500298">(Jul 21 2020 at 00:19)</a>:</h4>
<p>Ok so I believe we have:</p>
<ul>
<li><a href="https://perf.rust-lang.org/compare.html?start=71384101ea3b030b80f7def80a37f67e148518b0&amp;end=2e7283ac4c3767c9483f82e77119a8794133abea">perf for #74560</a> - green, but not hugely greent</li>
<li><a href="https://perf.rust-lang.org/compare.html?start=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;end=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;stat=instructions%3Au">perf of #73411</a> - very red</li>
<li><a href="https://perf.rust-lang.org/compare.html?start=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;end=2e7283ac4c3767c9483f82e77119a8794133abea">perf of just after gimli to #74560</a> - pretty green</li>
<li><a href="https://perf.rust-lang.org/compare.html?start=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;end=2e7283ac4c3767c9483f82e77119a8794133abea">perf of just before gimli to #74560</a></li>
</ul>



<a name="204500393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500393">(Jul 21 2020 at 00:21)</a>:</h4>
<p>I was thinking about this though, and this doesn't actually make a ton of sense. The fact that less debuginfo makes things faster at the instruction level for rustc is quite bizarre because the instruction counts of the linker itself aren't counted, and rustc shouldn't do anything differently regardless of whether the upstream libraries have debuginfo.</p>



<a name="204500717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500717">(Jul 21 2020 at 00:26)</a>:</h4>
<p>the wall clock of the linker went down by turning down debuginfo, which matches as expected, but how that has any affect on instruction counts is perplexing</p>



<a name="204500730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500730">(Jul 21 2020 at 00:27)</a>:</h4>
<p>from what I can tell though it looks like this is slowing things down just because more crates are loaded</p>



<a name="204500744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500744">(Jul 21 2020 at 00:27)</a>:</h4>
<p>and it's not exactly news that rust's compilation model isn't scalable</p>



<a name="204500834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204500834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204500834">(Jul 21 2020 at 00:28)</a>:</h4>
<p>it seems like there's a constant slowdown basically from adding more crates, and that's just proportionally a lot of some of the benchmarks' compilation times</p>



<a name="204503842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204503842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204503842">(Jul 21 2020 at 01:18)</a>:</h4>
<blockquote>
<p>the instruction counts of the linker itself aren't counted</p>
</blockquote>
<p>I'm pretty sure this is not true</p>



<a name="204503883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204503883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204503883">(Jul 21 2020 at 01:19)</a>:</h4>
<p>We just use <code>perf stat</code> which collects all child processes I think by default, otherwise we'd e.g. expect to see very low instruction counts on something like <code>perf stat make</code> but that's definitely not true afaik</p>



<a name="204503934"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204503934" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204503934">(Jul 21 2020 at 01:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> one thought is that we could presumably recoup some of the costs for the admittedly quite high cost of splitting backtrace into a separate library and treating it like a C library again</p>



<a name="204503937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204503937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204503937">(Jul 21 2020 at 01:20)</a>:</h4>
<p>but that seems... bad</p>



<a name="204505418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505418">(Jul 21 2020 at 01:53)</a>:</h4>
<p>Aha interesting, that would indeed explain more then yeah</p>



<a name="204505477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505477">(Jul 21 2020 at 01:54)</a>:</h4>
<p>Yeah I don't think it's worth trying to make gimli a c library, tbh this just looks like "more.stuff is linked" which is true...</p>



<a name="204505590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505590">(Jul 21 2020 at 01:57)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> also most of those links that are comparing across time are basically useless unfortunately, we've had a ton of various regressions and improvements over the past week</p>



<a name="204505605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505605">(Jul 21 2020 at 01:57)</a>:</h4>
<p>looks like it yes</p>



<a name="204505659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505659">(Jul 21 2020 at 01:58)</a>:</h4>
<p>the thing that concerns me is less the linking time and more so the 1439 additional metadata entries we're decoding on e.g. helloworld</p>



<a name="204505670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505670">(Jul 21 2020 at 01:58)</a>:</h4>
<p>which feels very wrong to me personally, like we're e.g. re-codegenning backtrace or something</p>



<a name="204505689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505689">(Jul 21 2020 at 01:58)</a>:</h4>
<p>My model of the world is that basically backtrace should be compiled into std and we should not need any more time in rustc as a result of it, but that seems untrue</p>



<a name="204505691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505691">(Jul 21 2020 at 01:58)</a>:</h4>
<p>I doubt it's anything like that, this is just exposing existing perf bugs with linking crates</p>



<a name="204505705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505705">(Jul 21 2020 at 01:59)</a>:</h4>
<p>I mean it's not the linker?</p>



<a name="204505707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505707">(Jul 21 2020 at 01:59)</a>:</h4>
<p>Rusts linking model is it always loads transitive deps, and now there are more of them</p>



<a name="204505717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505717">(Jul 21 2020 at 01:59)</a>:</h4>
<p>Right, rustc loads all transitive deps</p>



<a name="204505728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505728">(Jul 21 2020 at 01:59)</a>:</h4>
<p>And it's probably not smart enough yet to skip work if nothing is used</p>



<a name="204505730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505730">(Jul 21 2020 at 01:59)</a>:</h4>
<p>I thought we were pretty careful about being super lazy about metadata decoding</p>



<a name="204505733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505733">(Jul 21 2020 at 01:59)</a>:</h4>
<p>maybe I was too optimistic</p>



<a name="204505805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505805">(Jul 21 2020 at 02:00)</a>:</h4>
<p>Definitely for the body of the crate, maybe not for top level things</p>



<a name="204505812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505812">(Jul 21 2020 at 02:00)</a>:</h4>
<p>Or maybe we query more about transitive stuff than we thought</p>



<a name="204505908"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505908" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505908">(Jul 21 2020 at 02:03)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> how do you feel about reverting this and trying to track down the transitive things separately? tbh I'm not too optimistic about us being able to get the perf impact down</p>



<a name="204505979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505979">(Jul 21 2020 at 02:04)</a>:</h4>
<p>I'll think more tomorrow, but if this backs out now it seems like it will never land</p>



<a name="204505992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505992">(Jul 21 2020 at 02:04)</a>:</h4>
<p>I don't have time to fix bugs in rustc to recover a few ms from this pr</p>



<a name="204505995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204505995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204505995">(Jul 21 2020 at 02:04)</a>:</h4>
<p>Yeah</p>



<a name="204506014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506014">(Jul 21 2020 at 02:05)</a>:</h4>
<p>This just fixed a giant soundness hole in libstd basically</p>



<a name="204506053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506053">(Jul 21 2020 at 02:06)</a>:</h4>
<p>I agree that I'm pretty sure we need to eat the loss -- and really it seems like it's pretty likely this just exposes a potentially really non-optimized case in rustc</p>



<a name="204506115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> njn <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506115">(Jul 21 2020 at 02:07)</a>:</h4>
<p>Wait, are you talking about just eating up to 40% perf losses?</p>



<a name="204506209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506209">(Jul 21 2020 at 02:09)</a>:</h4>
<p>This is the part I need to look more into, if all the losses are just 50ms then that seems much less bad</p>



<a name="204506217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506217">(Jul 21 2020 at 02:09)</a>:</h4>
<p>I'll dig more into the perf stuff tomorrow</p>



<a name="204506353"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506353" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506353">(Jul 21 2020 at 02:12)</a>:</h4>
<p><span class="user-mention" data-user-id="120989">@njn</span> to be clear, we've already recovered a good portion of that by just disabling some debug info</p>



<a name="204506369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506369">(Jul 21 2020 at 02:13)</a>:</h4>
<p>I personally suspect that we should revert and then start cherry-picking fixes atop a branch so we can better evaluate the holistic perf impact</p>



<a name="204506383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506383">(Jul 21 2020 at 02:13)</a>:</h4>
<p>I don't even really want to think about what a +40% -10% means especially with stuff in between that</p>



<a name="204506453"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506453" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506453">(Jul 21 2020 at 02:15)</a>:</h4>
<p>for example, for helloworld-opt full, after we applied <a href="https://github.com/rust-lang/rust/commit/2e7283ac4c3767c9483f82e77119a8794133abea">https://github.com/rust-lang/rust/commit/2e7283ac4c3767c9483f82e77119a8794133abea</a>, we're down to <em>less</em> than the perf before gimli ever landed</p>



<a name="204506512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506512">(Jul 21 2020 at 02:16)</a>:</h4>
<p>649,241,147.00 before gimli<br>
946,943,019.00 w/ gimli<br>
649,241,147.00 w/ debuginfo (base commit of w/o debuginfo patch)<br>
589,260,782.00 w/o debuginfo</p>



<a name="204506623"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506623" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506623">(Jul 21 2020 at 02:19)</a>:</h4>
<p>hm maybe some of those numbers are wrong</p>



<a name="204506653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204506653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204506653">(Jul 21 2020 at 02:19)</a>:</h4>
<p>but regardless, it seems like there's definitely some open questions here that are best answered by fully reverting everything and then bors trying a dedicated PR</p>



<a name="204507683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507683">(Jul 21 2020 at 02:40)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> god I hate percentages :P</p>



<a name="204507702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507702">(Jul 21 2020 at 02:41)</a>:</h4>
<p>+40% -10% should technically be +26% but that's with nothing else happening</p>



<a name="204507757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507757">(Jul 21 2020 at 02:42)</a>:</h4>
<p>the confusing thing is that fixing a regression will always have less "percentage" than the regression itself</p>



<a name="204507781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507781">(Jul 21 2020 at 02:43)</a>:</h4>
<p>so you pretty much want to just ignore the math and "measure across" the regression-&gt;fix (even if partial fix?) gap</p>



<a name="204507846"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507846" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507846">(Jul 21 2020 at 02:44)</a>:</h4>
<p>oh, that's funny, a lot of the regressions are on <code>-doc</code></p>



<a name="204507867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204507867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204507867">(Jul 21 2020 at 02:45)</a>:</h4>
<p>presumably <code>rustdoc</code> is stumbling across the backtrace code in libstd? (but it also does full-crate-graph collection of some stuff like traits and impls)</p>



<a name="204508069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508069">(Jul 21 2020 at 02:51)</a>:</h4>
<p><del>@<strong>Alex Crichton</strong> I opened the "just before/after gimli to <a href="https://github.com/rust-lang/rust/issues/74560"><a href="https://github.com/rust-lang/rust/issues/74560">#74560</a></a>" links and clicked on "compare" and there's way more stuff in there</del> (ignore me, I got turned around)</p>



<a name="204508075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508075">(Jul 21 2020 at 02:51)</a>:</h4>
<p>before gimli</p>



<a name="204508082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508082">(Jul 21 2020 at 02:52)</a>:</h4>
<p>ah dammit I got confused by the branch names</p>



<a name="204508152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508152">(Jul 21 2020 at 02:53)</a>:</h4>
<p>I wish we could see a PR timeline instead of commits, it would be much less confusing</p>



<a name="204508269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508269">(Jul 21 2020 at 02:56)</a>:</h4>
<p>anyway this is what I was trying to get:</p>
<ul>
<li><a href="https://perf.rust-lang.org/compare.html?start=1fa54ad9680cc82e7301f8ed4e9b7402dfd6ce0e&amp;end=71384101ea3b030b80f7def80a37f67e148518b0">inner (after regression -&gt; before partial fix)</a></li>
<li><a href="https://perf.rust-lang.org/compare.html?start=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;end=2e7283ac4c3767c9483f82e77119a8794133abea">outer (before regression -&gt; after partial fix)</a></li>
</ul>



<a name="204508287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508287">(Jul 21 2020 at 02:57)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> <span class="user-mention" data-user-id="116122">@simulacrum</span> I don't think we can be scientific here easily because there was an improvement since the regression landed. the easieast thing in terms of juggling is landing a revert of the regression and re-landing the regression, measuring its impact with and without the debuginfo partial fix within a PR</p>



<a name="204508338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508338">(Jul 21 2020 at 02:59)</a>:</h4>
<p>Why is <code>perf</code>ing a revert not a viable option?</p>



<a name="204508339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508339">(Jul 21 2020 at 02:59)</a>:</h4>
<p>either that or we could add a "delta of deltas" mode to <a href="http://perf.rust-lang.org">perf.rust-lang.org</a> :P</p>



<a name="204508356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508356">(Jul 21 2020 at 02:59)</a>:</h4>
<p><span class="user-mention" data-user-id="123586">@nagisa</span> ah hmm. yeah that might work. perf a revert of both regression+partial fix, after landing the partial fix?</p>



<a name="204508400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508400">(Jul 21 2020 at 03:00)</a>:</h4>
<p>or just use the try build for the partial fix as the "before"</p>



<a name="204508410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508410">(Jul 21 2020 at 03:00)</a>:</h4>
<p>since the data we can't directly get is <code>outer - inner</code>, basically</p>



<a name="204508422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508422">(Jul 21 2020 at 03:01)</a>:</h4>
<p>what about comparing the absolute instruction count values? Or is it that <code>perf</code> cannot compare "current" vs arbitrary other selected commit?</p>



<a name="204508425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508425">(Jul 21 2020 at 03:01)</a>:</h4>
<p>and we can swap the two commits if we do the perf revert thing so the values have the right polarity</p>



<a name="204508429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508429">(Jul 21 2020 at 03:01)</a>:</h4>
<p><span class="user-mention" data-user-id="123586">@nagisa</span> perf would need to take in 4 commits for it to render all the deltas usefully</p>



<a name="204508472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508472">(Jul 21 2020 at 03:02)</a>:</h4>
<p>because you want "regression effect + fix effect" but there's some extra stuff in the middle</p>



<a name="204508483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508483">(Jul 21 2020 at 03:03)</a>:</h4>
<p>you can compare any two commits, but the "outer" in my example is "regression + inner + partial fix" and "inner" has some unrelated improvements</p>



<a name="204508487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508487">(Jul 21 2020 at 03:03)</a>:</h4>
<p>that's why I always grab the "inner" range - sometimes it's quite neutral and that means "outer" is already correct, but you don't always get lucky</p>



<a name="204508532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508532">(Jul 21 2020 at 03:04)</a>:</h4>
<p><span class="user-mention" data-user-id="123586">@nagisa</span> like I can do it by hand for one specific benchmark (<span class="user-mention" data-user-id="116122">@simulacrum</span> did above for <code>helloworld-opt</code>) but I want the UI so I know I'm not missing anything</p>



<a name="204508546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508546">(Jul 21 2020 at 03:05)</a>:</h4>
<p>oh that's fascinating, the "inner" improvements are all on -opt and -debug</p>



<a name="204508601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508601">(Jul 21 2020 at 03:06)</a>:</h4>
<p>ah okay so most of the remaining regression from the gimli thing is on -check, presumably because w/o debuginfo, the link times are now alright?</p>



<a name="204508660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508660">(Jul 21 2020 at 03:08)</a>:</h4>
<p><span class="user-mention" data-user-id="120989">@njn</span> also it's kind of hilarious what kind of scale these one-time costs are: 20% regression on <code>helloworld-check</code> seems to be mostly 2ms in <code>metadata_register_crate</code></p>



<a name="204508675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508675">(Jul 21 2020 at 03:09)</a>:</h4>
<p>the way <a href="http://perf.rust-lang.org">perf.rust-lang.org</a> renders values, it rounds to tens of miliseconds heh</p>



<a name="204508727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508727">(Jul 21 2020 at 03:11)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> if you look at <a href="https://perf.rust-lang.org/detailed-query.html?commit=2e7283ac4c3767c9483f82e77119a8794133abea&amp;base_commit=7d31ffc1ac9e9ea356e896e63307168a64501b9d&amp;benchmark=helloworld-check&amp;run_name=incr-full"><code>helloworld-check</code> <code>incr-full</code></a>, it's kind of funny that is says 1+2=5 (becasue it's rounding to miliseconds)</p>



<a name="204508826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508826">(Jul 21 2020 at 03:14)</a>:</h4>
<p>If you ignore the <code>-doc</code> benchmarks (should we have a way of toggling them?), the largest regression <em>on a real-world crate</em> in my "outer" like above is:</p>
<blockquote>
<p>futures-check avg: 4.0%   min: 1.6%   max: 6.0%</p>
</blockquote>



<a name="204508850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508850">(Jul 21 2020 at 03:15)</a>:</h4>
<p>and it looks like it's the same few miliseconds</p>



<a name="204508905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508905">(Jul 21 2020 at 03:16)</a>:</h4>
<p><span class="user-mention" data-user-id="120989">@njn</span> so basically percentages are useless at telling you there's a consistent extra startup cost to every compilation of a few ms</p>



<a name="204508974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204508974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204508974">(Jul 21 2020 at 03:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> oh I just saw you closed the partial fix PR (<a href="https://github.com/rust-lang/rust/issues/74560">#74560</a>) - I was thinking we could land it</p>



<a name="204509376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509376">(Jul 21 2020 at 03:28)</a>:</h4>
<p>I'm happy to land a revert and bundle fixes together so we can get accurate measurements</p>



<a name="204509380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509380">(Jul 21 2020 at 03:28)</a>:</h4>
<p>I do not want to be in a situation where if the number is bigger than zero then nothing lands full stop</p>



<a name="204509391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509391">(Jul 21 2020 at 03:29)</a>:</h4>
<p>that also works for me, even if <span class="user-mention" data-user-id="123586">@nagisa</span>'s idea avoids landing the revert</p>



<a name="204509403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509403">(Jul 21 2020 at 03:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> I think rustc-perf is just badly suited for measuring startup costs</p>



<a name="204509407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509407">(Jul 21 2020 at 03:29)</a>:</h4>
<p>To get an accurate measurement there has been enough noise I think a revert is in order</p>



<a name="204509412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509412">(Jul 21 2020 at 03:29)</a>:</h4>
<p>Well this is why we have lots of metrics</p>



<a name="204509414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509414">(Jul 21 2020 at 03:29)</a>:</h4>
<p>it's more focused on stuff that's proportional to the input, which is fair but also can get silly sometimes</p>



<a name="204509418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509418">(Jul 21 2020 at 03:30)</a>:</h4>
<p>Aborting if any metric is bad is not the purpose of perf</p>



<a name="204509463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509463">(Jul 21 2020 at 03:30)</a>:</h4>
<p>A bad metric is cause for investigation</p>



<a name="204509476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509476">(Jul 21 2020 at 03:30)</a>:</h4>
<p>right, we're just not rendering the relevant metric for this PR, which is an extra few ms (at least on <code>-check</code>, after debuginfo has been removed)</p>



<a name="204509477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509477">(Jul 21 2020 at 03:30)</a>:</h4>
<p>Like I legitimately did not expect this change to make anything worse, so I'm glad we have perf to identify it</p>



<a name="204509502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509502">(Jul 21 2020 at 03:31)</a>:</h4>
<p>At the same time if the regression is "the linker does more" then we either need to eat the regression or decide to never pull another crate into std</p>



<a name="204509581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509581">(Jul 21 2020 at 03:33)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> whacky idea: add something like <code>helloworld</code> but which has an empty <code>lib.rs</code> and produces a <code>staticlib</code> (so we can measure linking costs at <code>-debug</code>/<code>-opt</code> but at <code>-check</code> it would be mostly just "startup", i.e. loading <code>std</code>)</p>



<a name="204509663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509663">(Jul 21 2020 at 03:35)</a>:</h4>
<p>so the non-linker regressions on <code>-check</code> (maybe I shouldn't call them "startup", idk) look like this:</p>



<a name="204509665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509665">(Jul 21 2020 at 03:35)</a>:</h4>
<blockquote>
<p>html5ever-check   avg: 1.1%   min: 0.5%   max: 1.6%</p>
</blockquote>



<a name="204509712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509712">(Jul 21 2020 at 03:36)</a>:</h4>
<p>that's the same as a 20% regression. and even the 0.5% and the 1.6% are the same regression. it just looks smaller because it's an absolute regression</p>



<a name="204509723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509723">(Jul 21 2020 at 03:37)</a>:</h4>
<p>if we go further down, these are again the same regression:</p>
<blockquote>
<p>cargo-check   avg: 0.3%   min: 0.2%   max: 0.4%<br>
style-servo-check avg: 0.1%   min: 0.1%   max: 0.1%</p>
</blockquote>



<a name="204509772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204509772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204509772">(Jul 21 2020 at 03:38)</a>:</h4>
<p>so from 0.1% to 20%. and I don't think there's an "absolute delta" mode on <code>compare.html</code></p>



<a name="204520676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204520676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mati865 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204520676">(Jul 21 2020 at 08:00)</a>:</h4>
<p>Wish I could help somehow with recovering perf so we can reland it without that much regression.</p>



<a name="204525030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204525030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Philip Craig <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204525030">(Jul 21 2020 at 08:56)</a>:</h4>
<p>Is the regression related to the size of the crate? Would it help to add features to gimli so that backtrace-rs can disable things it doesn't need?</p>



<a name="204525103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204525103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204525103">(Jul 21 2020 at 08:57)</a>:</h4>
<p><span class="user-mention" data-user-id="214708">@Philip Craig</span> so linker-wise: the size of the compiled code + debuginfo. it looked like removing debuginfo pretty much removed most of the linker regression so that's probably it</p>



<a name="204525127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204525127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204525127">(Jul 21 2020 at 08:57)</a>:</h4>
<p>anything else is arguably a bug in rustc where we're eagerly loading something we shouldn't bother with</p>



<a name="204554621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204554621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204554621">(Jul 21 2020 at 14:33)</a>:</h4>
<p>I <a href="https://github.com/rust-lang/rust/pull/73441#issuecomment-661898402">followed up on the original PR</a>, but after looking again at the information this morning I would personally say we do not need to revert</p>



<a name="204554717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204554717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204554717">(Jul 21 2020 at 14:34)</a>:</h4>
<p><span class="user-mention" data-user-id="214708">@Philip Craig</span> the size of the crate matters mostly I believe insofar as the linker itself, otherwise it seems like most of these regressions are appearing simply because there's more crates linked into the standard library</p>



<a name="204554783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204554783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204554783">(Jul 21 2020 at 14:35)</a>:</h4>
<p>the linker has to resolve all the undefined symbols in gimli/addr2line/etc, and only then after it's done that will it realize much of it was for naught and it's all gc-able</p>



<a name="204554853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204554853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204554853">(Jul 21 2020 at 14:35)</a>:</h4>
<p>not to say that wins aren't possible (removing debuginfo was clearly at least some of a win) but it's going to be a lot of whack-a-mole without much guidance to see if anything actually has an effect here</p>



<a name="204555095"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555095" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555095">(Jul 21 2020 at 14:37)</a>:</h4>
<p>we should land the debuginfo win, at least</p>



<a name="204555289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555289">(Jul 21 2020 at 14:38)</a>:</h4>
<p>I'm happy to do that, but I would push back a little on that because it's drawing a line in the sand saying "nothing added to libstd in the future is allowed to be as privileged as libstd is now"</p>



<a name="204555324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555324">(Jul 21 2020 at 14:39)</a>:</h4>
<p>like it's obviously faster, but it's not obvious why we would provide debuginfo for just some parts of std and not others</p>



<a name="204555457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555457">(Jul 21 2020 at 14:40)</a>:</h4>
<p>If the purpose of debuginfo in libstd is purely for monomorphized code, then that seems fine becuase gimli/etc will not ever be monomorphized</p>



<a name="204555744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555744">(Jul 21 2020 at 14:42)</a>:</h4>
<p>I'm not entirely clear that we should be providing debuginfo at all</p>



<a name="204555792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204555792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204555792">(Jul 21 2020 at 14:42)</a>:</h4>
<p>I guess split-debuginfo is the way to go in the future which would entirely eliminate debuginfo as a source of regressions</p>



<a name="204557022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557022">(Jul 21 2020 at 14:51)</a>:</h4>
<p>also to be clear I'm not the one making the decisions here, I think it's fair to overrule me</p>



<a name="204557053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557053">(Jul 21 2020 at 14:51)</a>:</h4>
<p>I'd like to make my case but others likely feel different</p>



<a name="204557432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557432">(Jul 21 2020 at 14:54)</a>:</h4>
<p><span class="user-mention" data-user-id="116015">@Alex Crichton</span> one question I had is why we're not already seeing most of gimli etc gc'd -- are we just linking that much more code in now? Is rust code less prone to gc than libbacktrace?</p>



<a name="204557468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557468">(Jul 21 2020 at 14:54)</a>:</h4>
<p>(pre-gc'd that is in Rust's CI)</p>



<a name="204557539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557539">(Jul 21 2020 at 14:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="119009">eddyb</span> <a href="#narrow/stream/247081-t-compiler.2Fperformance/topic/regression.20after.20switching.20to.20gimli/near/204525127">said</a>:</p>
<blockquote>
<p>anything else is arguably a bug in rustc where we're eagerly loading something we shouldn't bother with</p>
</blockquote>
<p>I'd be most interested in fixing this issue</p>



<a name="204557561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557561">(Jul 21 2020 at 14:55)</a>:</h4>
<p>since that would benefit crates besides rustc itself</p>



<a name="204557568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557568">(Jul 21 2020 at 14:55)</a>:</h4>
<p>a stripped executable is 50kb larger on nightly, so the code-size impact of gimli is larger (which is to be expected, idiomatic Rust is generally larger than C, partly because it exhaustively checks errors but also just idioms, rustc, etc)</p>



<a name="204557637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557637">(Jul 21 2020 at 14:55)</a>:</h4>
<p>so in that sense there is factually more code for the linker to chew through, although I would say it has to gc <em>more</em> with Rust code than with libbacktrace</p>



<a name="204557678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557678">(Jul 21 2020 at 14:55)</a>:</h4>
<p>okay that makes some sense then</p>



<a name="204557689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557689">(Jul 21 2020 at 14:55)</a>:</h4>
<p>libbacktrace probably only gc'd a few symbols where with the Rust side it gc's a whole deflate implementation in miniz for example</p>



<a name="204557773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557773">(Jul 21 2020 at 14:56)</a>:</h4>
<p>the sum size of all these crates is likely much larger than libbacktrace itself</p>



<a name="204557879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204557879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204557879">(Jul 21 2020 at 14:57)</a>:</h4>
<p>like that's a possibility for backing this out and trying to reland it later, it could be that the dependencies are just too heavyweight right now and not enough analysis has been done about why they're heavyweight and where they could be improved</p>



<a name="204560099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204560099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204560099">(Jul 21 2020 at 15:12)</a>:</h4>
<p>I've opened the debuginfo change for landing at <a href="https://github.com/rust-lang/rust/pull/74591">https://github.com/rust-lang/rust/pull/74591</a></p>



<a name="204565181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565181">(Jul 21 2020 at 15:48)</a>:</h4>
<p>Would it be possible to make a thin API (maybe C) over gimli, compiled into a pre-GCed static library?</p>



<a name="204565228"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565228" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565228">(Jul 21 2020 at 15:49)</a>:</h4>
<p>I'm not sure if the linker can do that, but maybe LTO?</p>



<a name="204565755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565755">(Jul 21 2020 at 15:53)</a>:</h4>
<p><span class="user-mention" data-user-id="138448">@cuviper</span> My impression is "yes" but Alex is saying that if that's the line we're drawing it makes it increasingly hard to land any large-ish changes to std</p>



<a name="204565883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565883">(Jul 21 2020 at 15:54)</a>:</h4>
<p>I think I agree with <span class="user-mention" data-user-id="124288">@oli</span> that we should definitely fix the bugs in the compiler that are leading to this much more time spent from adding some dependencies -- linker time we can't do much about, but rustc itself shouldn't really get slower.</p>



<a name="204565920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565920">(Jul 21 2020 at 15:54)</a>:</h4>
<p>I sympathize with that -- <code>std</code> must be allowed to grow</p>



<a name="204565945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cuviper <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565945">(Jul 21 2020 at 15:54)</a>:</h4>
<p>but this is a little special in that it's all runtime support, not user-facing API</p>



<a name="204565959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204565959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204565959">(Jul 21 2020 at 15:54)</a>:</h4>
<p>sure yeah</p>



<a name="204566009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204566009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204566009">(Jul 21 2020 at 15:55)</a>:</h4>
<p>which is why I'm saying it's a compiler bug that we're doing more <em>in the compiler</em> after std is already compiled because of some added rust code</p>



<a name="204566032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204566032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204566032">(Jul 21 2020 at 15:55)</a>:</h4>
<p>(and not in e.g. optimizing Backtrace::new or something afaict)</p>



<a name="204598564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204598564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204598564">(Jul 21 2020 at 20:22)</a>:</h4>
<p>AFAICT it's mostly when loading up the minimal amount of data it needs about <code>std</code> and transitive dependencies. my guess is that the current set of things we eagerly load isn't minimal enough. although there's always a tradeoff between lazy loading skipping work, and the penalty of actually having to load it later. but most of the time it's better to defer work</p>



<a name="204804494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804494">(Jul 23 2020 at 14:29)</a>:</h4>
<p>@mark-sim</p>



<a name="204804514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804514">(Jul 23 2020 at 14:29)</a>:</h4>
<p>er, <span class="user-mention" data-user-id="116122">@simulacrum</span>, can you rust-timer try <a href="https://github.com/rust-lang/rust/pull/74682">https://github.com/rust-lang/rust/pull/74682</a>?</p>



<a name="204804519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804519">(Jul 23 2020 at 14:29)</a>:</h4>
<p>yep</p>



<a name="204804581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804581">(Jul 23 2020 at 14:30)</a>:</h4>
<p>that looks incomplete though?</p>



<a name="204804612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804612">(Jul 23 2020 at 14:30)</a>:</h4>
<p>we should include the other patches into it (e.g., debuginfo)</p>



<a name="204804637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804637">(Jul 23 2020 at 14:30)</a>:</h4>
<p>or are you thinking to do multiple trys or so?</p>



<a name="204804692"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804692" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804692">(Jul 23 2020 at 14:31)</a>:</h4>
<p>(I'm happy btw to take this on if you want)</p>



<a name="204804766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204804766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204804766">(Jul 23 2020 at 14:31)</a>:</h4>
<p>oh I see you squashed the commits okay</p>



<a name="204809116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/regression%20after%20switching%20to%20gimli/near/204809116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Alex Crichton <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/regression.20after.20switching.20to.20gimli.html#204809116">(Jul 23 2020 at 15:02)</a>:</h4>
<p>oh sorry yeah I squashed everything into one, and I think it should include all the other various fixes and such</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>